SAFE Logo
CodeMatch Detailed Report
Version: 5.7.2 | Date: 08/27/16 | Time: 18:44:41

SCORE

SETTINGS
Compare file 1: Z:\Zeidman Consulting\projects\DOS and CPM\code\CHM\CPM\1.3\ED.plm
To file 2: Z:\Zeidman Consulting\projects\DOS and CPM\code\CHM\CPM\1.3\ED.plm
Links to results: Matching Statements
Matching Comments and Strings
Matching Instruction Sequences
Matching Identifiers
Partially Matching Identifiers
Score
RESULTS
Matching Statements
File1 Line# File2 Line# Statement
22100H: DECLARE BDOS LITERALLY , BOOT LITERALLY
88.DECLARE COPYRIGHT DATA ( )
125125DECLARE LIT LITERALLY ,
126126DCL LIT ,
127127PROC LIT ,
128128ADDR LIT ,
129129CTLL LIT ,
130130CTLU LIT ,
131131LCA LIT ,
132132LCZ LIT ,
133133ENDFILE LIT
135135DECLARE MAXA ADDRESS INITIAL(0006H),
136136MAX ADDRESS,
137137MAXM ADDRESS,
138138HMAX ADDRESS,
139139MAZB BASED MAXA ADDRESS
141141DECLARE NBUF LITERALLY ,
142142BUFS LITERALLY ,
143143BDISKA ADDRESS INITIAL(4),
144144BDISK BASED BDISKA BYTE,
145145FCBA ADDRESS INITIAL(5CH),
146146FCB BASED FCBA (33) BYTE,
147147BUFA ADDRESS INITIAL (80H),
148148RFCB (33) BYTE
149149INITIAL(0, ,
151151PBP BYTE,
152152BUFF BASED BUFA (33) BYTE,
153153SFCB BASED FCBA (33) BYTE,
154154SBUFF(BUFS) BYTE,
155155DFCB (33) BYTE,
156156DBUFF (BUFS) BYTE,
157157NSOURCE ADDRESS,
158158NDEST ADDRESS
160160DECLARE SDISK BYTE,
161161DDISK BYTE
163163MON1: PROCEDURE(F,A)
163163DECLARE F BYTE, A ADDRESS
164
168
164
168
GO TO BDOS
165165END MON1
167167MON2: PROCEDURE(F,A) BYTE
167167DECLARE F BYTE, A ADDRESS#
169169END MON2
171171READCHAR: PROCEDURE BYTE
171171RETURN MON2(1,0)
172172END READCHAR
174174DECLARE TRUE LITERALLY , FALSE LITERALLY ,
175175FOREVER LITERALLY ,
176176CR LITERALLY ,
177177LF LITERALLY ,
178178WHAT LITERALLY
180180^PRINTCHAR: PROCEDURE(CHAR)
181
436
452
181
436
452
DECLARE CHAR BYTE
182182CALL MON1(2,CHAR)
183183END PRINTCHAR
185185CRLF: PROCEDURE
186186CALL PRINTCHAR<CR>
186186CALL PRINTCHAR (LF)
187187END CRLF
189189^PRINT: PROCEDURE (A)
190
195
268
295
190
195
268
295
DECLARE A ADDRESS
191
288
290
312
884
191
288
290
312
884
CALL CRLF
191191CALL MON1(9,A)
192192END PRINT
194194READ: PROCEDURE(A)
196196CALL MON1(10,A)
197197END READ
199199DECLARE DCNT BYTE
201201OPEN: PROCEDURE(FCB)
202
207
212
217
222
227
232
237
202
207
212
217
222
227
232
237
DECLARE FCB ADDRESS
203203DCNT = MON2(15,FCB)
204204END OPEN
206206CLOSE: PROCEDURE(FCB)
208208DCNT = MON2(16,FCB)
209209END CLOSE
211211SEARCH: PROCEDURE(FCB)
213213DCNT = MON2(17,FCB)
214214END SEARCH
216216DELETE: PROCEDURE(FCB)
218218CALL MON1(19,FCB)
219219END DELETE
221221DISKREAD: PROCEDURE(FCB) BYTE
223223RETURN MON2(20,FCB)
224224END DISKREAD
226226DISKWRITE, PROCEDURE(FCB) BYTE
228228RETURN MON2(21,FCB)
229229END DISKWRITE
231231MAKE: PROCEDURE(FCB)
233233DCNT = MON2(22,FCB)
234234END MAKE
236236RENAME: PROCEDURE(FCB)
238238CALL MON1(23,FCB)
239239END RENAME
241241DECLARE (MAXLEN,COMLEN) BYTE, COMBUFF(128) BYTE,
242242(TCBP,CBP) BYTE
244244READCOM, PROCEDURE
245245MAXLEN = 123
245245CALL READ(.MAXLEN)
246246END READCOM
248248BREAK$KEY: PROCEDURE BYTE
249249IF MON2(11,0) THEN
251251CALL MON1(1,0)
251
548
251
548
RETURN TRUE
253
550
253
550
RETURN FALSE
254254END BREAK$KEY
256256CSELECT: PROCEDURE BYTE
258258RETURN MON2(25,0)
259259END CSELECT
261261SELECT: PROCEDURE(DISK)
262262DECLARE DISK BYTE
264264CALL MON1(14,DISK)
265265END SELECT
267267SETDMA: PROCEDURE(A)
270270CALL MON1(26,A)
271271END SETDMA
273273LIFTHEAD: PROCEDURE
275275CALL MON1(12,0)
276276END LIFTHEAD
279279MOVE: PROCEDURE(S,D,N)
280280DECLARE(S,D) ADDRESS, N BYTE
281281DECLARE A BASED S BYTE, B BASED D BYTE
282282DC WHILE (N := N - 1)<> 255
283283B = A
283283S = S + 1
283283D = D + l
285285END MOVE
287287FERR: PROCEDURE
289
311
289
311
CALL PRINT (. )
291
906
970
291
906
970
GO TO BOOT
292292END FERR
294294SETTYPE, PROCEDURE(A)
296296CALL MOVE(A, .DFCB+9,3)
297297END SETTYPE
299299SETUP: PROCEDURE
300300NSOURCE = LENGTH(SBUFF)
300
363
300
363
NDEST = 0
301301SFCB(12) = 0
301301SFCB(32) = 0
304304CALL MOVE(FCBA,.DFCB,33)
306
336
399
505
306
336
399
505
CALL SELECT(SDISK)
307307CALL OPEN(FCBA)
308
959
308
959
IF DCNT = 255 THEN
309309CALL MAKE(FCBA)
310
325
396
310
325
396
IF DCNT = 255 THEN CALL FERR
314
321
398
404
314
321
398
404
CALL SETTYPE(. )
315
322
315
322
CALL DELETE(.DFCB)
316316IF SDISK <> DDISK THEN
318
366
405
318
366
405
CALL SELECT(DDISK)
319319CALL DELETED(.DFCB)
323323CALL MAKE(.DFCB)
324324DFCB(32) = O
327327END SETUP
329329FILLSOURCE: PROCEDURE
330
786
801
330
786
801
DECLARE I BYTE
331
362
331
362
ZN: PROCEDURE
332332NSOURCE * 0
333
364
333
364
END ZN
335
347
368
374
335
347
368
374
CALL ZN
337337DO I = 0 TO NBUF
338338CALL SETDMA(.SBUFF(NSOURCE))
339339IF (DCNT := DISKREAD(FCBA)) <> 0 THEN
340340IF DCNT > 1 THEN CALL FERR
341341SBUFF(NSOURCE) = ENDFILE
342342I = NBUF
345345NSOURCE = NSOURCE * 80h
348348END FILLSOURCE
350350GETSOURCE: PROCEDURE BYTE
351
378
623
644
351
378
623
644
DECLARE B BYTE
352352IF NSOURCE > = LENGTH(SBUFF) THEN CALL FILLSOURCE
353353IF (B := SBUFF(NSOURCE)) <> ENDFILE THEN
354354NSOURCE = NSOURCE + 1
355
629
355
629
RETURN B
356356END GETSOURCE
358358WRITEDEST: PROCEDURE
361361DECLARE (I,N) BYTE
367367IF LOW((N := SHR(NDEST,7) - 1)) = 255 THEN RETURN
369369DO I = 0 TO N
370370CALL SETDMA(.DBUFF(NDEST))
371371IF DISKWRITE(.DFCB) <> 0 THEN CALL FERR
372372NDEST = NDEST + 128
375375END WRITEDEST
377377^PUTDEST: PROCEDURE(B)
379379IF NDEST) >= LENGTH(DBUFF) THEN CALL WRITEDEST
380380DBUFF(NDEST) = B
381381NDEST = NDEST + 1
382382END PUTDEST
384384FINIS: PROCEDURE
385385MOVEUP: PROCEDURE
386386CALL MOVE(.DFCB,.DFCB+16,16)
387387END MOVEUP
390390DO WHILE(LOW(NDEST) AND 7FH) <> 0
391391CALL PUTDEST<ENDFILE>
393393CALL WRITEDEST
395395CALL CLOSE(. DFC0)
398398CALL MOVEUP
400400CALL MOVE(FCBA,.DFCB,16)
401
406
401
406
CALL RENAME(.DFCB)
402402CALL MCVEUP
407407END FINIS
410410LPP LIT ,
411411FORWARD LIT ,
412412BACKWARD LIT ,
413413RUBOUT LIT ,
414414POUND LIT ,
415415MACSIZE LIT ,
416416SCRSIZE LIT ,
417417COMSIZE LIT
419419DCL MACRO(MACSIZE) BYTE,
420420SCRATCH(SCRSIZE) BYTE,
421421(UBP, WBE, WBJ) BYTE,
422422(FLAG, MP, MI, XP, COLUMN) BYTE,
423423MT COMSIZE
425425DCL(START, RESTART, OVERCOUNT, OVERFLOW, RESET, BADCOM) LABEL
427427DCL INSERTING BYTE,
428428READBUFF BYTE
431431TAB LITERALLY ,
432432EOS LITERALLY
435435TTYCHAR: PROCEDURE(CHAR)
437437IF CHAR >= THEN COLUMN = COLUMN + 1
438438IF CHAR = CR THEN COLUMN = 0
439439CALL PRINTCHAR(CHAR)
440440END TTYCHAR
442442^PRINTC: PROCEDURE(CHAR)
443443DECLARE (CHAR,I,J) BYTE
444444I = CHAR = TAB AND 7 - (COLUMN AND 7)
445445IF CHAR = TAB THEN CHAR =
446446DO J = 0 TO I
447447CALL TTYCHAR(CHAR)
449449END PRINTC
451451^PRINTNMAC: PROCEDURE(CHAR)
454454IF MP <> 0 THEN RETURN
455
882
455
882
CALL PRINTC(CHAR)
456456END PRINTNMAC
458458DECLARE TRANSLATE BYTE,
459459UPPER BYTE
461461LOWERCASE: PROCEDURE(C) BYTE
462
468
847
462
468
847
DECLARE C BYTE
464464RETURN C >= LCA AND C <= LCZ
465465END LOWERCASE
467467UTRAN: PROCEDURE(C) BYTE
470470IF TRANSLATE AND LOWERCASE(C) THEN C = C AND 10111110
471471RETURN C
472472END UTRAN
474474READC
476476IF MP > 0 THEN
478
803
1137
478
803
1137
IF BREAK$KEY THEN GO TO RESET
479479IF XP >= MP THEN
481481IF MT <> 0 THEN
482482IF(MT:=MT-1) = 0 THEN
483
767
873
875
483
767
873
875
GO TO RESET
485
1127
485
1127
XP = 0
487487RETURN UTRAN(MACRO((XP XP + 1) - 1)
489489IF INSERTING THEN RETURN UTRAN(READCHAR)
492492IF READBUFF THEN
493493READBUFF = FALSE
493493CALL LIFTHEAD
494494CALL PRINTC( )
495495CALL READCOM
495495CBP = 0
496
763
881
924
496
763
881
924
CALL PRINTC(LF)
497
870
497
870
COLUMN = 0
499499IF (READBUFF := CBP = COMLEN ) THEN COMBUFF(CBP) = CR
500500RETURN UTRAN(COMBUFF((CBP := CBP +1) -1))
501501END READC
503503READFILE: PROCEDURE BYTE
504504IF RBP >= 80H THEN
506506IF DISKREAD(.RFCB) <> 0 THEN RETURN ENDFILE
507507RBP = 0
509509RETURN UTRAN(BUFF((RBP := RBP + i) - 1))
510510END READFILE
512512GETMEM: PROC(I) BYTE
513513DCL I ACDR
514514RETURN MEMORY(I)
515515END GETMEM
517517^PUTMEM: PROC(I,J)
518518DCL I ADDR, J BYTE
519519MEMORY(I) = J
520520END PUTMEM
522522TRANSFER: PROC(I,J)
523523DCL (I,J) ADDR
524524CALL PUTMEM(I,GETMEM(J))
525525END TRANSFER
527527DCL(DISTANCE. TDIST) COMSIZE,
528528(DIRECTION, CHAR) BYTE,
529529( FRONT, BACK, FIRST, LAST) ADDR
531531SETFF: PROCEDURE
532532DISTANCE = 0FFFFH
533533END SETFF
535535DISTZERO: PROCEDURE BYTE
537537RETURN DISTANCE = 0
538538END DISTZERO
540540ZERODIST: PROCEDURE
541
926
541
926
DISTANCE = 0
542542END ZERODIST
544544DISTNZERO: PROCEDURE BYTE
546546IF NOT DISTZERO THEN
547547DISTANCE = DISTANCE - 1
551551END NDISTNZERO
553553SETLIMITS: PROC
554554DCL(I,K,L,M) ADDR,(MIDDLE,LOOPING) BYTE
555
575
611
555
575
611
IF DIRECTION = BACKWARD THEN
556556DISTANCE = DISTANCE+1
556556I = FRONT
556556L = 0
556556K * 0FFFFH
558558I = BACK
558558L = MAXM
558558K = 1
561561LOOPING = TRUE
562562DO WHILE LOOPING
563563DO WHILE(MIDDLE := I <> L) AND
564564GETMEM(M := I+K) <> LF
565565I = M
567567LOOPING =(DISTANCE := DISTANCE - 1) <> 0
568568IF NOT MIDDLE THEN
569569LOOPING = FALSE
570570I = I - K
572572IF LOOPING THEN I = M
576
667
1141
576
667
1141
FIRST = I
576576LAST = FRONT - 1
578578FIRST = BACK + I
578578LAST = I + 1
580580END SETLIMITS
582582SETPTRS: PROCEDURE
583583IF DIRECTION = FORWARD THEN BACK-LAST
583583ELSE FRONT=FIRST
584584END SETPTRS
586586INCFRONT: PROC
586586FRONT = FRONT + 1
587587END INCFRONT
588588INCBACK: PROCEDURE
588588BACK = BACK + 1
589589END INCBACK
590590DECFRONT: PROC
590590FRONT = FRONT - 1
591591END DECFRONT
592592DECBACK: PROC
592592BACK = BACK - 1
593593END DECBACK
595595MOVER: PROC
596596IF DIRECTION = FORWARD THEN
597597DO WHILE BACK < LAST
597
649
597
649
CALL INCBACK
598598CALL TRANSFER(FRONT,BACK)
598
637
697
598
637
697
CALL INCFRONT
600600DO WHILE FRONT > FIRST
600
930
600
930
CALL DECFRONT
601601CALL TRANSFER(BACK,FRONT)
601601CALL DECBACK
603603END MOVER
605605MOVELINES: PROC
606
761
926
1030
606
761
926
1030
CALL SETLIMITS
607
668
675
738
1014
1019
1080
1087
1115
1141
607
668
675
738
1014
1019
1080
1087
1115
1141
CALL MOVER
608608END MOVELINES
610610SETCLIMITS: PROC
612
667
612
667
LAST = BACK
613613IF DISTANCE > FRONT THEN
614
1014
614
1014
FIRST = 1
614614ELSE FIRST = FRONT - DISTANCE
616
1080
616
1080
FIRST = FRONT
617617IF DISTANCE >= MAX - BACK THEN
618
1014
1080
618
1014
1080
LAST = MAXM
618618ELSE LAST = BACK + DISTANCE
620620END SETCLIMITS
622622READLINE: PROCEDURE
625625CTRAN: PROCEDURE(B) BYTE
626626DECLAPE B BYTE
628628IF UPPER THEN RETURN UTRAN(B)
630630END CTRAN
631
645
889
631
645
889
DO FOREVER
632632IF FRONT >= BACK THEN GO TO OVERFLOW
633633IF (B := CTRAN(GETSOURCE)) = ENDFILE THEN
634
647
634
647
CALL ZERODIST
636636CALL PUTMEM(FRONT, B)
638
651
638
651
IF B = LF THEN RETURN
640640END READLINE
642642WRITELINE: PROCEDURE
646646IF BACK >= MAXM THEN
650650CALL PUTDEST(B:=GETMEM(BACK))
653653END WRITELINE
655655WRHALF: PROCEDURE
657
681
815
984
657
681
815
984
CALL SETFF
658
671
816
1042
1084
1095
1106
1134
1155
1175
658
671
816
1042
1084
1095
1106
1134
1155
1175
DO WHILE DISTNZERO
659659IF HMAX >= (MAXM - BACK) THEN CALL ZERODIST
660
672
660
672
CALL WRITELINE
662662END WRHALF
664664WRITEOUT: PROCEDURE
667
925
980
1087
1115
1141
667
925
980
1087
1115
1141
DIRECTION = BACKWARD
669669IF DISTZERO THEN CALL WRHALF
674674IF BACK < LAST THEN
675
791
809
1039
1142
675
791
809
1039
1142
DIRECTION = FORWARD
677677END WRITEOUT
679679CLEARMEM, PROCEDURE
682
1168
682
1168
CALL WRITEOUT
683683END CLEARMEM
685685TERMINATE: PROCEDURE
687
1138
687
1138
CALL CLEARMEM
688688DO WHILE(CHAR := GETSOURCE) <> ENDFILE
689689CALL PUTDEST(CHAR)
691691CALL FINIS
692692END TERMINATE
694694INSERT: PROCEDURE
696696IF FRONT = BACK THEN GO TO OVERFLOW
697697CALL PUTMEM(FRONT,CHAR)
698698END INSERT
700700SCANNING: PROCEDURE BYTE
702702RETURN NOT((CHAR := READC) = ENDFILE OR
703703(CHAR = CR AND NOT INSERTING))
704704END SCANNING
706706COLLECT: PROCEDURE
711711SETSCR: PROCEDURE
712712SCRATCH(WBE) = CHAR
713713IF(WBE := WBE + 1) > LAST(SCRATCH) THEN GO TO OVERFLOW
714714END SETSCR
715
921
949
715
921
949
DO WHILE SCANNING
716716IF CHAR = CTLL THEN
717
824
717
824
CHAR = CR
717
721
717
721
CALL SETSCR
718
825
718
825
CHAR = LF
720720IF CHAR = 0 THEN GO TO RESET
723723END COLLECT
725725FIND: PROCEDURE(PA,PB) BYTE
726726DECLARE(PA, PB) BYTE
728728DECLARE J ADDRESS
729729(K, MATCH) BYTE
730730J = BACK
730730MATCH = FALSE
731731DO WHILE NOT MATCH AND (MAXM > J)
732732LAST,J = J + 1
732732K = PA
733733DO WHILE SCRATCH(K) = MEMORY(LAST) AND NOT (MATCH := K = PB)
734734K = K + 1
734734LAST = LAST + 1
737737IF MATCH THEN
738738LAST = LAST - 1
740740RETURN MATCH
741741END FIND
743743SETFIND: PROCEDURE
745745USE = 0
745
1102
1103
1152
745
1102
1103
1152
CALL COLLECT
745745WBP = WBE
746746END SETFIND
748748CHKFOUND: PROCEDURE
750750IF NOT FIND(0,WBP) THEN GO TO OVERCOUNT
751751END CHKFOUND
754754SETRFCB
756756RFCB((RBP := RBP + 1) - 1) = CHAR
757757END SETRFCB
759759TYPELINES: PROCEDURE
760760DCL I ADDR
762762IF GETMEM(FIRST - 1) = LF AND COLUMN <> 0 THEN
763
881
924
763
881
924
CALL PRINTC(CR)
765765DO I = FIRST TO LAST
766766IF BREAK$KEY THEN
768768CALL PRINTC(GETMEM(I))
770770END TYPELINES
772772SETLPP: PROCEDURE
774774DISTANCE = LPP
775775END SETLPP
777777SAVEDIST: PROCEDURE
778778TDIST = DISTANCE
779779END SAVEDIST
781781RESTDIST: PROCEDURE
782782DISTANCE = TDIST
783783END RESTDIST
785785^PAGE: PROCEDURE
787
1138
787
1138
CALL SAVEDIST
788
792
1040
788
792
1040
CALL SETLPP
789
1060
789
1060
CALL MOVELINES
790790I = DIRECTION
793793CALL TYPELINES
794794DIRECTION = I
795795IF LAST = MAXM OR FIRST = 1 THEN CALL ZERODIST
796796ELSE CALL RESTDIST
797797END PAGE
799799WAIT: PROCEDURE
802802DO I = 0 TO 19
804804CALL TIME(250)
806806END WAIT
808808SETFORWARD: PROCEDURE
810810DISTANCE = 1
811811END SETFORWARD
813813APPHALF: PROCEDURE
817817IF FRONT >= HMAX THEN CALL ZERODIST
818
1085
818
1085
CALL READLINE
820820END APPHALF
822822INSCRLF: PROCEDURE
824
825
933
964
1109
1162
824
825
933
964
1109
1162
CALL INSERT
826826END INSCRLF
828828TESTCASE: PROCEDURE
829829DECLARE T BYTE
832
947
832
947
TRANSLATE = TRUE
833833T = LOWERCASE(CHAR)
834834CHAR = UTRAN(CHAR)
835835TRANSLATE = UPPER OR NOT T
836836END TESTCASE
838838READCTRAN: PROCEDURE
840840TRANSLATE = FALSE
841841CHAR = READC
842842CALL TESTCASE
843843END READCTRAN
845845SINGLECOM: PROCEDURE(C) BYTE
848848RETURN CHAR= C AND CONLEN = 1 AND MP
849849END SINGLECOM
852852MAX = MAXB - MEMORY - 1
853853MEMORY(MAX) = 0
854854MAXM = MAX - 1
855855HMAX = SHR(MAXM,1)
857857UPPER = FALSE
859859IF (FCB(l) = ) OR (FCB(17) <> ) THEN CALL FERR
860860IF (SDISK := FCB)= 0 THEN SDISK = CSELECT
861861SDISK = SDISK - 1
861861FCB = 0
863863IF (DDISK := FCB(16)) = 0 THEN DDISK = SDISK
864864DDISK = DDISK - 1
866866RESTART:
867867CALL SETUP
868868MEMORY = LF
869869FRONT = 1
869869BACK = MAXM
871871GO TO START
873873OVERCOUNT: FLAG = POUND
875875BADCOM: FLAG = WHAT
877877OVERFLOW:
878878FLAG =
880880RESET:
883883CALL PRINTC(FLAG)
886886START:
887887READBUFF = TRUE
888888MP = 0
900900INSERTING = FALSE
901
980
984
988
991
901
980
984
988
991
CALL READCTRAN
902902MI = CBP
903
910
943
969
903
910
943
969
IF SINGLECOM( ) THEN
904
911
904
911
CALL TERMINATE
905905IF SDISK <> DDISK THEN BDISK = DDISK
912912CHAR = DDISK
912912DDISK = SDISK
912912SDISK = CHAR
914
944
914
944
GO TO RESTART
918
945
979
1012
1018
1023
1029
1037
1048
1053
1078
1092
1100
1131
1150
1167
1170
918
945
979
1012
1018
1023
1029
1037
1048
1053
1078
1092
1100
1131
1150
1167
1170
IF CHAR = THEN
920920INSERTING = (CBP = COMLEN) AND(MP = 0)
922922DO WHILE CHAR <> O
923923IF CHAR = CTLU THEN
926
1025
1031
926
1025
1031
CALL SETPTRS
928928IF CHAR = RUBOUT THEN
929929IF FRONT = 1 THEN GO TO RESET
930930CALL PRINTC(GETMEM(FRONT))
932932IF CHAR = CTLL THEN CALL INSCRLF
934
1057
934
1057
IF CHAR = CR THEN
935935CALL PRINTNMAC(CHAR:=LF)
935935ELSE CHAR=0
938938IF CHAR <> ENDFILE THEN
939939CALL INSCRLF
948948RBP = 1
950950IF RBP > 0 THEN GO TO OVERCOUNT
951
955
951
955
CALL SETRFCB
953953CHAR =
954954DO WHILE RBP <= 8
957957RFCB(12), RFCB(32) = 0
958958CALL OPEN(RFCB):= RBP = 80H
960960FLAG = GO TO RESET
962962DO WHILE (CHAR := READFILE) <> ENDFILE
963963IF UPPER THEN CHAR = UTRAN(CHAR)
970970CALL DELETE(DFCB)
976976DCL I BYTE
977
1060
977
1060
CALL SETFORWARD
983983IF CHAR = POUND THEN
987987IF (I:=CHAR- )<= 9 THEN
988988DISTANCE = I
989989DO WHILE (I := CHAR - ) <= 9
990990DISTANCE = SHL(DISTANCE,3) + SHL(DISTANCE,1) * I
994994IF DISTZERO THEN DIRECTION = BACKWARD
10131013DIRECTION = 1 - DIRECTION
1019
1024
1019
1024
CALL SETCLIMITS
10351035IF CHAR = THEN CALL MOVELINES
1038
1172
1038
1172
IF DISTZERO THEN
1040
1049
1060
1040
1049
1060
CALL TYPELlNES
10421042CALL PAGE
1043
1175
1043
1175
CALL WAIT
10541054UPPER = DIRECTION = FORWARD
10591059IF MI = 1 AND MP = 0 THEN
10651065IF DIRECTION = FORWARD OR DISTZERO THEN
10821082IF DISTZERO THEN CALL APPHALF
1093
1102
1133
1151
1093
1102
1133
1151
CALL SETFIND
1095
1106
1156
1095
1106
1156
CALL CHKFOUND
11011101DECLARE T ADDRESS
11031103WBJ = WBE
11071107MI = WBP - 1
11081108DO WHILE(MI := MI + 1) < WBJ
1109
1161
1109
1161
CHAR = SCRATCH(MI)
11111111T = FRONT
11121112IF NOT FIND(WBJ,WBE) THEN GO TO OVERCOUNT
11141114FIRST = FRONT -(WBE - WBJ)
11171117FRONT = T
11221122IF CHAR = AMD MP = 0 THEN
11231123XP = 255
11241124IF DISTANCE = 1 THEN CALL ZERODIST
11251125DO WHILE (MACRO(XP := XP + 1) = READC) <> CR
11271127MP = XP
11271127MT = DISTANCE
11361136DO WHILE NOT FIND(0,WBP)
11401140CALL APPHALF
11421142CALL RESTDIST
11441144IF BACK >= MAXM THEN GO TO OVERCOUNT
11591159FRONT = FRONT - (MI := WBP)
11601160DO WHILE MI< WBE
11621162MI = MI + 1
11731173IF READCHAR = ENDFILE THEN GO TO RESET
11781178IF CHAR <> 0 THEN
1180
1182
1180
1182
GO TO BADCOM

to top

Matching Comments and Strings
File1 Line# File2 Line# Comment/String
11E D , T H E C P / M C O N T E X T E D I T O R
220005H
33COPYRIGHT (C) 1976
44DIGITAL RESEARCH
55BOX 579 PACIFIC GROVE
66CALIFORNIA 93950
88COPYRIGHT (C) 1976, DIGITAL RESEARCH
1010COMMAND FUNCTION
1111------- --------
1212A APPEND LINES OF TEXT TO BUFFER
1313B MOVE TO BEGINNING OR END OF TEXT
1414C SKIP CHARACTERS
15
1002
15
1002
D DELETE CHARACTERS
1616E END OF EDIT
1717F FIND STRING IN CURRENT BUFFER
1818H MOVE TO TOP OF FILE (HEAD)
1919I INSERT CHARACTERS FROM KEYBOARD
2020UP TO NEXT (ENDFILE)
2121J JUXTAPOSITION OPERATION - SEARCH FOR FIRST STRING,
2222INSERT SECOND STRING, DELETE UNTIL THIRD STRING
2323K DELETE LINES
2424L SKIP L INES
2525M MACRO DEFINITION (SEE COMMENT BELOW)
2626N FIND NEXT OCCURRENCE OF STRING
2727WITH AUTO SCAN THROUGH FILE
2828O RE-EDIT OLD FILE
2929P PAGE AND DISPLAY (MOVES UP OR DOWN 24 LINES AND
3030DISPLAYS 24 LINES)
3131Q OUIT EDIT WITHOUT UPDATING THE FILE
3232R<FILENAME> READ FROM FILE <FILENAME>.LIB UNTIL <ENDFILE> AND
3333INSERT INTO TEXT
3434S SEARCH FOR FIRST STRING, REPLACE BY SECOND STRING
35
1006
35
1006
T TYPE LINES
3636U MOVE UP LINES (SAME AS -HP)
3737W WRITE LINES OF TEXT TO FILE
3838Z SLEEP FOR 1/2 SECOND (USED IN MACROS TO STOP DISPLAY)
3939<CR> MOVE UP OR DOWN AND PRINT ONE LINE
4141A NUMBER OF COMMANDS CAN BE PRECEDED BY A POSITIVE OR
4242NEGATIVE INTEGER BETWEEN 0 AND 65535 (1 IS DEFAULT IF NO VALUE
4343IS SPECIFIED). TNIS VALUE DETERMINES THE NUMBER OF TIMES THE
4444COMMAND IS APPLIED BEFORE RETURNING FOR ANOTHER COMMAND.
45
48
51
54
45
48
51
54
THE COMMANDS
4646C D K L T P U <CR>
4747CAN BE PRECEDED BY AN UNSIGNED, POSITIVE, OR NEGATIVE NUMBER.
4949A F J N W Z
5050CAN BE PRECEDED BY AN UNSIGNED OR POSITIVE NUMBER.
5252E H D Q
5353CANNOT BE PRECEDED BY AN UNSIGNED OR POSITIVE NUMBER.
5555F I J M R S
5656ARE ALL FOLLOWED BY ONE OR MORE STRINGS OF CHARACTERS WHICH CAN
5757BE OPTIONALLY SEPARATED OR TERMINATED BY EITHER <ENDFILE> OR <CR>.
5858THE <ENDFILE> IS GENERALLY USED TO SEPARATE THE SEARCH STRINGS
5959IN THE S AMD J COMMANDS, AND IS USED AT THE END OF THE COMMANDS IF
6060ADDITIONAL COMMANDS FOLLOW. FOR EXAMPLE. THE FOLLOWING COMMAND
6161SEQUENCE SEARCHES FOR THE STRING 'GAMMA', SUBSTITUTES THE STRING
6262'DELTA', AND THEN TYPES THE FIRST PART OF THE LINE WHERE THE
6363CHANGE OCCURRED, FOLLOWED BY THE REMAINDER OF THE LINE WHICH WAS
6464CHANGED.
6565SGAMMA<ENDFILE>NDELTA<ENDFILE>ATT<CR>
6767THE CONTROL-L CHARACTER IN SEARCH AND SUBSTITUTE STRINGS IS
6868REPLACED ON INPUT BY <CR><LF> CHARACTERS THE CONTROL-I KEY
6969IS TAKEN AS A TAB CHARACTER.
7171THE COMMAND R MUST BE FOLLOWED BY A FILE NAME (WITH ASSUMED FILE
7272TYPE OF 'LIB`) WITH A TRAILING <CR> OR <ENDFILE>. THE COMMAND
7373I IS FOLLOWED BY A STRING OF SYMBOLS TO INSERT. TERMINATED BY
7474A <CR> OR <ENDFILE>. IF SEVERAL LINES OF TEXT ARE TO BE INSERTED,
7575THE I CAN BE DIRECTLY FOLLOWED BY AN <ENDFILE> OR <CR> IN WHICH
7676CASE THE EDITOR ACCEPTS LINES OF INPUT TO THE NEXT <ENDFILE>.
7777THE COMMAND 0T PRINTS THE FIRST PART OF THE CURRENT LINE,
7878AND THE COMMAND 0L MOVES THE REFERENCE TO THE BEGINNING OF THE
7979CURRENT LINE. THE COMMAND 0P PRINTS THE CURRENT PAGE ONLY. WHILE
8080THE COMMAND 0Z READS THE CONSOLE RATHER THAN WAITING (THIS IS USED
8181AGAIN WITHIN MACROS TO STOP THE DISPLAY - THE MACRO EXPANSION
8282STOPS UNTIL A CHARACTER IS READ. IF THE CHARACTER IS NOT A BREAK
8383THEN THE MACRO EXPANSION CONTINUES NORMALLY)
8585NOTE THAT A POUND SIGN IS TAKEN AS THE NUMBER 65535, ALL
8686UNSIGNED NUMBERS ARE ASSUMED POSITIVE, AND A SINGLE - IS ASSUMED -1
8888A NUMBER OF COMMANDS CAN BE GROUPED TOGETHER AND EXECUTED
8989REPETITIVELY USING THE MACRO COMMAND WHICH TAKES THE FORM
9191<NUMBER>MC1C2...CN<DELIMITER>
9393WHERE <NUMBER> IS A NON-NEGATIVE INTEGER N, AND <DELIMITER> IS
9494<ENDFILE> OR <CR>. THE COMMANDS Cl ... CN FOLLOWING THE M ARE
9595EXECUTED N TIMES, STARTING AT THE CURRENT POSITION IN THE BUFFER.
9696IF N IS 0, 1, OR OMITTED, THE COMMANDS ARE EXECUTED UNTIL THE END
9797IF THE BUFFER IS ENCOUNTERED.
9999THE FOLLOWING MACRO, FOR EXAMPLE, CHANGES ALL OCCURRENCES OF
100100THE NAME 'GAMMA' TO 'DELTA', AND PRINTS THE LINES WHICH
101101WERE CHANGED,
103103MFGAMMA<ENDFILE>-5DIDELTA<ENDFILE>0LT<CR>
105105(NOTE, AN <ENDFILE> IS THE CP/M END OF FILE MARK - CONTROL-Z)
107107IF ANY KEY IS DEPRESSED DURING TYPING OR MACRO EXPANSION. THE
108108FUNCTION IS CONSIDERED TERMINATED, AND CONTROL RETURNS TO THE
109109OPERATOR.
111111ERROR CONDITIONS ARE INDICATED BY PRINTING ONE OF THE CHARACTERS,
113113SYMBOL ERROR CONDITION
114114------ ----------------------------------------------------
115115GREATER FREE MEMORY IS EXHAUSTED - ANY COMMAND CAN 8E ISSUED
116116WHICH DOES NOT INCREASE MEMORY REQUIREMENTS.
117117QUESTION UNRECOGNIZED COMMAND OR ILLEGAL NUMERIC FIELD
118118POUND CANNOT APPLY THE COMMAND THE NUMBER OF TINES SPECIFIED
119119(OCCURS IF SEARCH STRING CANNOT BE FOUND).
120120LETTER O CANNOT OPEN <FILENAME>.LIB IN R COMMAND
122122THE ERROR CHARACTER IS ALSO ACCOMPANIED BY THE LAST CHARACTER
123123SCANNED WHEN THE ERROR OCCURRED.
125125LITERALLY
126126DECLARE
127127PROCEDURE
128
417
128
417
ADDRESS
1291290CH
13013015H
130130LINE DELETE IN INSERT MODE
131131110$0001B
131131LOWER CASE A
132132111$1010B
132132LOWER CASE Z
1331331AH
133133CP/M END OF FILE
135135MONITOR LOCATION
136136FILLED FROM MAXA
137137MINUS 1
138138HALF THE VALUE OF MAXM
139139TEMP TO COMPUTE ADDR
141141NUMBER OF BUFFERS-1
1421421024
142142(NBUF+1) * 128
143143BOOT DISK ADDRESS
144144BOOT DISK VALUE
146146DEFAULT FCB AT 5CH
147147DISK IO BUFFER ADDRESS
148148READER FILE CONTROL BLOCK
149149FILE NAME
150150FILE TYPE
150150LIB
151151READ BUFFER POINTER
152152DISKI0 BUFFER
153153SOURCE FILE CONTROL
154154SOURCE BUFFER
155155DEST FILE CONTROL BLOCK
156156DESTINATION BUFFER
157157NEXT SOURCE CHARACTER
158158NEXT DESTINATION CHAR
160160SOURCE FILE DISK
161161DESTINATION FILE DISK
162162IO SECTION
175175WHILE TRUE
250250CLEAR CHAR
257257RETURN CURRENT DRIVE NUMBER
263263SET DRIVE NUMBER
269269SET DMA ADDRESS
274274LIFT HEAD ON SA 3900 DISK
277277INPUT / OUTPUT SUFFERING ROUTINES
289289FILE ERROR$
302302REEL AND RECORD ZEROED
303303COPY NAME TO DESTINATION FCB
305305SOURCE AND DESTINATION DISKS SET
311311NEW FILE$
314
398
314
398
BAK
317317REMOVE BAK FILES FROM DESTINATION DISK
321
404
321
404
$$$
324324NEXT RECORD IS ZERO
326326THE TEMP FILE IS NQU CREATED
359359WRITE OUTPUT BUFFER UP TO(NOT INCLUDING) NDEST.
360360LOW 7 BITS OF NDEST ARE ZERO
389389CLEAR OUTPUT
397397RENAME OLD FILE TO BAX
403403RENAME $$$ TO OLD NAME
410410LINES PER PAGE
41341307FH
41441423H
415415128
415415MAX MACRO SIZE
416416100
416416SCRATCH BUFFER SIZE
417417DETERMINES MAX COMMAND NUMBER
420420SCRATCH BUFFER FOR F,N,S
421421END OF F STRING, S STRING, J STRING
427427TRUE IF INSERTING CHARACTERS
428428TRUE IF END OF READ BUFFER
43143111Q
4324320FFH
453453PRINT IF NOT IN MACRO EXPANSION
458458TRUE IF TRANSLATION TO UPPER CASE
459459TRUE IF GLOBALLY TRANLATING TO UC
463463RETURN TRUE IF LOWER CASE ALPHABETIC
469469TRANSLATE TO UPPER CASE IF ALPHABETIC LOWER AND TRANSLATE
475475MAY BE MACRO EXPANSION
480480START AGAIN
491491GET COMMAND LINE
536536RETURN TRUE IF DISTANCE IS ZERO
545545CHECK FOR ZERO DISTANCE AND DECREMENT
624624READ ANOTHER LINE OF INPUT
627627CONDITIONALLY TRANSLATE TO UPPER CASE ON INPUT
643643WRITE ONE LINE OUT
646646EMPTY
656656WRITE LINES UNTIL AT LEAST HALF THE BUFFER IS EMPTY
665665WRITE LINES DETERMINED BY 'DISTANCE',
666666CALLED FROM W AND E COMMANDS
670670DISTANCE = 0 IF CALL WRHALF
680680CLEAR MEMORY BUFFER
686686CLEAR BUFFERS
695695INSERT CHAR INTO MEMORY BUFFER
701701READ A CHARACTER AND CHECK FOR ENDFILE OR CR
707707READ COMMAND BUFFER AND INSERT CHARACTERS INTO
708708SCRATCH 'TIL NEXT CONTROL-Z OR CR FOR FIND, NEXT, JUXT, OR
709709SUBSTITUTE COMMANDS - FILL AT WBE AND INCREMENT WBE SO IT
710710ADDRESSES NEXT EMPTY POSITION OF SCRATCH
727727FIND THE STRING IN SCRATCH STARTING AT PA AND ENDING AT PB
731731START SCAN AT J
732732ATTEMPT STRING MATCH AT K
737737MOVE STORAGE
744744SETUP THE SEARCH STRING FOR F,N, AND S COMMANDS
749749CHECK FOR FOUND STRING IN F AND S COMMANDS
750750NO MATCH
755755PLACE CHAR INTO READ FILE CONTROL BLOCK AND INCREMENT
773773SET DISTANCE TO LINES PER PAGE
8008001/2 SECOND TIME OUT
814814APPEND 'TIL BUFFER IS AT LEAST HALF FULL
815815DISTANCE = 0FFFFH
823823INSERT CR LF CHARACTERS
830830TEST FOR UPPER OR LOWER CASE COMMAND AND SET TRANSLATE
831831FLAG (USED TO DETERMINE IF CHARACTERS WHICH FOLLOW GO TO UPPER
839839SET TPANSLATE TO FALSE AND READ NEXT CHARACTER
846846RETURN TRUE IF COMMAND IS ONLY CHARACTER, NOT IN MACRO
851851INITIALIZE THE SYSTEM
853853STOPS MATCH AT END OF BUFFER
856856INITIALLY ASSUME NO TRANSLATE TO UPPER CASE
858858GET SOURCE AND DESTINATION DISKS
861861CLEAR DISK NAME
877877ARRIVE HERE ON OVERFLOW CONDITION (I,P,S COMMAND)
880880ARRIVE HERE OH SYSTEM RESET OR OVERFLOW CONDITION
889889OR UNTIL THE POWER IS TURNED OFF
890
898
998
1009
1068
1076
890
898
998
1009
1068
1076
**************************************************************
891891SIMPLE COMMANDS (CANNOT BE PRECEDED BY DIRECTION/DISTANCE):
892892E END THE EDIT NORMALLY
893893H MOVE TO HEAD OF EDITED FILE
894894I INSERT CHARACTERS
895895O RETURN TO THE ORIGINAL FILE
896896R READ FROM LIBRARY FILE
897897Q QUIT EDIT WITHOUT CHANGES TO ORIGINAL FILE
902902SAVE STARTING ADDRESS FOR <CR> COMMAND
910910GO TO TOP
913913PING - PONG DISKS
918918INSERT CHARACTERS
923923LINE DELETE
925925ELIMINATE LINE
938938MUST HAVE STOPPED ON CR
943943FORGET THIS EDIT
946946READ FROM 'LIB' FILE
957957FILL REEL, AND NEXT RECORD
974974MAY BE A COMMAND WHICH HAS AN OPTIONAL DIRECTION AND DISTANCE
975975SCAN A SIGNED INTEGER VALUE(IF ANY)
995995DIRECTION AND DISTANCE ARE NOW SET
999999MAY BE A COMMAND WHICH HAS DIRECTION AND DISTANCE SPECIFIED:
10001000B BEGINNING/BOTTOM OF BUFFER
10011001C MOVE CHARACTER POSITIONS
10031003K KILL LINES
10041004L MOVE LINE POSITION
10051005P PAGE UP OR DOWN (LPP LINES AND PRINT)
10071007U OPPOSITE L
10081008<CR> MOVE UP OR DOWN LINES AND PRINT LINE
10251025SETS BACK/FRONT
10371037PAGE MODE PRINT
10571057MAY BE MOVE/TYPE COMMAND
10591059FIRST COMMAND
10691069COMMANDS WHICH ALLOW DULY A PRECEDING NUMBER
10701070A APPEND LINES
10711071F FIND NTH OCCURRENCE
10721072M APPLY MACRO
10731073N SAME AS F WITH AUTOSCAN THROUGH FILE
10741074S PERFORM N SUBSTITUTIONS
10751075W WRITE LINES TO OUTPUT FILE
10811081ALL STORAGE FORWARD
10831083DISTANCE = 0 IF APPHALF CALLED
10881088POINTERS REPOSITIONED
1093
1133
1093
1133
SEARCH STRING SCANNED
10941094AND SETUP BETWEEN 0 AND WBP-1 IN SCRATCH
11001100JUXTAPOSITION OPERATION
11041104SEARCH FOR STRING 0 - WBP-1, INSERT STRING WBP TO WBJ-1,
11051105AND THEN DELETE UP TO STRING WBJ TO WBE-1
11071107INSERT STRING
11111111SAVE POSITION FOR DELETE
11131113STRING FOUND, SO MOVE IT BACK
11161116NOW REMOVE THE INTERMEDIATE STRING
11221122MACRO DEFINITION
11321132SEARCH FOR STRING WITH AUTOSCAN
11351135FIND ANOTHER OCCURRENCE OF STRING
11361136NOT IN BUFFER
11391139MEMORY BUFFER WRITTEN
11431143MAY BE END OF FILE
11501150SUBSTITUTE COMMAND
11531153FIND STRING FROM0 TO WBP-1, SUBSTITUTE STRING
11541154BETWEEN WBP AND WBE-1 IN SCRATCH
11571157FRONT AMD BACK NOW POSITIONED AT FOUND
11581158STRING - REPLACE IT
11591159BACKED UP
11701170SLEEP
11781178NOT BREAK LEFT OVER FROM STOP
11791179DIRECTION FORWARD, BUT NOT ONE OF THE ABOVE
11811181DIRECTION NOT FORWARD

to top

Matching Instruction Sequences
File1 Line# File2 Line# Number of matching instructions
2 2 976
633 646 10
646 633 10
1014 1019 16
1014 1025 10
1019 1014 16
1025 1014 10

to top

Matching Identifiers
0006H 0FFFFH 10 100H 10111110 11 12 123
128 14 15 16 17 19 20 21
22 23 25 250 255 26 32 33
5CH 7FH 80H ACDR ADDR AMD APPHALF BACK
BACKWARD BADCOM BDISK BDISKA BDOS BOOT BREAK$KEY BUFA
BUFF BUFS CBP CHAR CHKFOUND CLEARMEM CLOSE COLLECT
COLUMN COMBUFF COMLEN COMSIZE CONLEN COPYRIGHT CR CRLF
CSELECT CTLL CTLU CTRAN DBUFF DC DCL DCNT
DDISK DECBACK DECFRONT DECLAPE DELETE DELETED DFC0 DFCB
DIRECTION DISK DISKREAD DISKWRITE DISTANCE DISTNZERO DISTZERO ENDFILE
EOS FALSE FCB FCBA FERR FILLSOURCE FIND FINIS
FIRST FLAG FOREVER FORWARD FRONT GETMEM GETSOURCE HMAX
INCBACK INCFRONT INSCRLF INSERT INSERTING LAST LCA LCZ
LENGTH LF LIFTHEAD LIT LOOPING LOW LOWERCASE LPP
MACRO MACSIZE MAKE MATCH MAX MAXA MAXB MAXLEN
MAXM MAZB MCVEUP MEMORY MI MIDDLE MON1 MON2
MOVE MOVELINES MOVER MOVEUP MP MT NBUF NDEST
NDISTNZERO NSOURCE OPEN OVERCOUNT OVERFLOW PA PAGE PB
PBP POUND PRINT PRINTC PRINTCHAR PRINTNMAC PROC PUTDEST
PUTMEM RBP READ READBUFF READC READCHAR READCOM READCTRAN
READFILE READLINE RENAME RESET RESTART RESTDIST RFCB RUBOUT
SAVEDIST SBUFF SCANNING SCRATCH SCRSIZE SDISK SEARCH SELECT
SETCLIMITS SETDMA SETFF SETFIND SETFORWARD SETLIMITS SETLPP SETPTRS
SETRFCB SETSCR SETTYPE SETUP SFCB SHL SHR SINGLECOM
START TAB TCBP TDIST TERMINATE TESTCASE TIME TRANSFER
TRANSLATE TRUE TTYCHAR TYPELINES TYPELlNES UBP UPPER USE
UTRAN WAIT WBE WBJ WBP WHAT WRHALF WRITEDEST
WRITELINE WRITEOUT XP ZERODIST ZN

to top

Partially Matching Identifiers
*** NONE ***
to the top
SCORE 100

CodeSuite copyright 2003-2016 by Software Analysis and Forensic Engineering Corporation